//
//  main.c
//  结构体嵌套
//
//  Created by ws on 2017/7/25.
//  Copyright © 2017年 王松. All rights reserved.
//

#include <stdio.h>

/**
 结构体嵌套:一个结构体内部可以有其他类型的结构体成员
 注意点:
 1.结构体不可以嵌套自己,不能有字节这种类型的成员
 2.结构体可以嵌套自己类型的指针
 */
//定义一个日期结构体
struct Time{
    int hour; //HH
    int minute; //mm
    int second;//ss
};
struct Date{
    int year;
    int month;
    int day;
    struct Time time;
};
struct Employee{
    int no;
    char name[20];
    //入职日期
    struct Date inDate;
    //生日
    struct Date birthday;
    //离职日期
    struct Date outDate;
    
    
};
void test(){
    struct Employee emp = {1,"xx",{2014,10,14,{12,12,12}},{1990,9,10},{2014,11,14}};
    printf("no = %d,name = %s,入职日期 = %d-%d-%d %d:%d:%d\n",emp.no,emp.name,emp.inDate.year,emp.inDate.month,emp.inDate.day,emp.inDate.time.hour,emp.inDate.time.minute,emp.inDate.time.second);
}
/*
 结构体嵌套的注意点:
 1.结构体不可以嵌套自己,不能有字节这种类型的成员
 2.结构体可以嵌套自己类型的指针
 */
struct Person{
    char *name;
    //    struct Person son;
    struct Person *son;
};
void 就是这么吊(){
    printf("就是这么吊\n");
}
int main(int argc, const char * argv[]) {
    struct Person father = {"father"};
    struct Person son = {"son"};
    father.son = &son;
    printf("son name = %s\n",father.son->name);
    printf("son name = %s\n",(*father.son).name);
    就是这么吊();
    return 0;
}
